package com.zs.propertymanage.service.impl;

import com.zs.propertymanage.dataObj.R;
import com.zs.propertymanage.dataObj.entity.PatrolPlan;

public interface PatrolService {

    // 巡查任务

    /**
     * 生成巡查任务
     *
     * @param frequency 巡查频率
     */
    void generatePatrolTask(Integer frequency);

    /**
     * 获取巡查任务列表
     *
     * @param search      搜索参数
     * @param currentPage 当前页
     * @param pageSize    每页显示数量
     * @return 巡查任务列表
     */
    R getPatrolTask(String search, Integer currentPage, Integer pageSize);

    /**
     * 修改巡查任务关闭状态
     *
     * @param id 任务id
     * @return 处理结果
     */
    R switchTaskCloseStatus(String id);

    /**
     * 根据员工id获取巡查任务列表
     *
     * @param employeeId  员工id
     * @param search      搜索参数
     * @param currentPage 当前页
     * @param pageSize    每页条数
     * @return 查询结果
     */
    R getPatrolTaskByEmployeeId(String employeeId, String search, Integer currentPage, Integer pageSize);

    /**
     * 处理巡查任务
     *
     * @param taskId       任务id
     * @param handleRemark 处理备注
     * @return 处理结果
     */
    R handleTask(String taskId, String handleRemark);


    // 巡查计划

    /**
     * 获取巡查计划列表
     *
     * @param search      搜索参数
     * @param currentPage 当前页
     * @param pageSize    每页显示数量
     * @return 巡查任务列表
     */
    R getPatrolPlan(String search, Integer currentPage, Integer pageSize);

    /**
     * 添加巡查计划
     *
     * @param patrolPlan 巡查计划(duty待处理)
     * @return 处理结果
     */
    R addPatrolPlan(PatrolPlan patrolPlan);

    /**
     * 根据id删除巡查计划
     *
     * @param id 计划id
     * @return 处理结果
     */
    R deletePatrolPlan(String id);

    /**
     * 修改巡查计划
     *
     * @param patrolPlan 巡查计划
     * @return 处理结果
     */
    R updatePatrolPlan(PatrolPlan patrolPlan);

    // 获取巡查计划责任人
    R getPatrolPlanDuty(String planId);
}
